home *** CD-ROM | disk | FTP | other *** search
/ BCI NET / BCI NET Dec 94.iso / archives / programming / c / gcc261ud-c.lha / gnu / os-include / inline / expansion.h < prev    next >
C/C++ Source or Header  |  1994-09-22  |  9KB  |  294 lines

  1. #ifndef _INLINE_EXPANSION_H
  2. #define _INLINE_EXPANSION_H
  3.  
  4. #include <sys/cdefs.h>
  5. #include <inline/stubs.h>
  6.  
  7. __BEGIN_DECLS
  8.  
  9. #ifndef BASE_EXT_DECL
  10. #define BASE_EXT_DECL
  11. #define BASE_EXT_DECL0 extern struct ExpansionBase * ExpansionBase;
  12. #endif
  13. #ifndef BASE_PAR_DECL
  14. #define BASE_PAR_DECL
  15. #define BASE_PAR_DECL0 void
  16. #endif
  17. #ifndef BASE_NAME
  18. #define BASE_NAME ExpansionBase
  19. #endif
  20.  
  21. BASE_EXT_DECL0
  22.  
  23. extern __inline BOOL 
  24. AddBootNode (BASE_PAR_DECL long bootPri,unsigned long flags,struct DeviceNode *deviceNode,struct ConfigDev *configDev)
  25. {
  26.   BASE_EXT_DECL
  27.   register BOOL  _res  __asm("d0");
  28.   register struct ExpansionBase *a6 __asm("a6") = BASE_NAME;
  29.   register long d0 __asm("d0") = bootPri;
  30.   register unsigned long d1 __asm("d1") = flags;
  31.   register struct DeviceNode *a0 __asm("a0") = deviceNode;
  32.   register struct ConfigDev *a1 __asm("a1") = configDev;
  33.   __asm __volatile ("jsr a6@(-0x24)"
  34.   : "=r" (_res)
  35.   : "r" (a6), "r" (d0), "r" (d1), "r" (a0), "r" (a1)
  36.   : "a0","a1","d0","d1", "memory");
  37.   return _res;
  38. }
  39. extern __inline void 
  40. AddConfigDev (BASE_PAR_DECL struct ConfigDev *configDev)
  41. {
  42.   BASE_EXT_DECL
  43.   register struct ExpansionBase *a6 __asm("a6") = BASE_NAME;
  44.   register struct ConfigDev *a0 __asm("a0") = configDev;
  45.   __asm __volatile ("jsr a6@(-0x1e)"
  46.   : /* no output */
  47.   : "r" (a6), "r" (a0)
  48.   : "a0","a1","d0","d1", "memory");
  49. }
  50. extern __inline BOOL 
  51. AddDosNode (BASE_PAR_DECL long bootPri,unsigned long flags,struct DeviceNode *deviceNode)
  52. {
  53.   BASE_EXT_DECL
  54.   register BOOL  _res  __asm("d0");
  55.   register struct ExpansionBase *a6 __asm("a6") = BASE_NAME;
  56.   register long d0 __asm("d0") = bootPri;
  57.   register unsigned long d1 __asm("d1") = flags;
  58.   register struct DeviceNode *a0 __asm("a0") = deviceNode;
  59.   __asm __volatile ("jsr a6@(-0x96)"
  60.   : "=r" (_res)
  61.   : "r" (a6), "r" (d0), "r" (d1), "r" (a0)
  62.   : "a0","a1","d0","d1", "memory");
  63.   return _res;
  64. }
  65. extern __inline void 
  66. AllocBoardMem (BASE_PAR_DECL unsigned long slotSpec)
  67. {
  68.   BASE_EXT_DECL
  69.   register struct ExpansionBase *a6 __asm("a6") = BASE_NAME;
  70.   register unsigned long d0 __asm("d0") = slotSpec;
  71.   __asm __volatile ("jsr a6@(-0x2a)"
  72.   : /* no output */
  73.   : "r" (a6), "r" (d0)
  74.   : "a0","a1","d0","d1", "memory");
  75. }
  76. extern __inline struct ConfigDev *
  77. AllocConfigDev (BASE_PAR_DECL0)
  78. {
  79.   BASE_EXT_DECL
  80.   register struct ConfigDev * _res  __asm("d0");
  81.   register struct ExpansionBase *a6 __asm("a6") = BASE_NAME;
  82.   __asm __volatile ("jsr a6@(-0x30)"
  83.   : "=r" (_res)
  84.   : "r" (a6)
  85.   : "a0","a1","d0","d1", "memory");
  86.   return _res;
  87. }
  88. extern __inline APTR 
  89. AllocExpansionMem (BASE_PAR_DECL unsigned long numSlots,unsigned long slotAlign)
  90. {
  91.   BASE_EXT_DECL
  92.   register APTR  _res  __asm("d0");
  93.   register struct ExpansionBase *a6 __asm("a6") = BASE_NAME;
  94.   register unsigned long d0 __asm("d0") = numSlots;
  95.   register unsigned long d1 __asm("d1") = slotAlign;
  96.   __asm __volatile ("jsr a6@(-0x36)"
  97.   : "=r" (_res)
  98.   : "r" (a6), "r" (d0), "r" (d1)
  99.   : "a0","a1","d0","d1", "memory");
  100.   return _res;
  101. }
  102. extern __inline void 
  103. ConfigBoard (BASE_PAR_DECL APTR board,struct ConfigDev *configDev)
  104. {
  105.   BASE_EXT_DECL
  106.   register struct ExpansionBase *a6 __asm("a6") = BASE_NAME;
  107.   register APTR a0 __asm("a0") = board;
  108.   register struct ConfigDev *a1 __asm("a1") = configDev;
  109.   __asm __volatile ("jsr a6@(-0x3c)"
  110.   : /* no output */
  111.   : "r" (a6), "r" (a0), "r" (a1)
  112.   : "a0","a1","d0","d1", "memory");
  113. }
  114. extern __inline void 
  115. ConfigChain (BASE_PAR_DECL APTR baseAddr)
  116. {
  117.   BASE_EXT_DECL
  118.   register struct ExpansionBase *a6 __asm("a6") = BASE_NAME;
  119.   register APTR a0 __asm("a0") = baseAddr;
  120.   __asm __volatile ("jsr a6@(-0x42)"
  121.   : /* no output */
  122.   : "r" (a6), "r" (a0)
  123.   : "a0","a1","d0","d1", "memory");
  124. }
  125. extern __inline struct ConfigDev *
  126. FindConfigDev (BASE_PAR_DECL struct ConfigDev *oldConfigDev,long manufacturer,long product)
  127. {
  128.   BASE_EXT_DECL
  129.   register struct ConfigDev * _res  __asm("d0");
  130.   register struct ExpansionBase *a6 __asm("a6") = BASE_NAME;
  131.   register struct ConfigDev *a0 __asm("a0") = oldConfigDev;
  132.   register long d0 __asm("d0") = manufacturer;
  133.   register long d1 __asm("d1") = product;
  134.   __asm __volatile ("jsr a6@(-0x48)"
  135.   : "=r" (_res)
  136.   : "r" (a6), "r" (a0), "r" (d0), "r" (d1)
  137.   : "a0","a1","d0","d1", "memory");
  138.   return _res;
  139. }
  140. extern __inline void 
  141. FreeBoardMem (BASE_PAR_DECL unsigned long startSlot,unsigned long slotSpec)
  142. {
  143.   BASE_EXT_DECL
  144.   register struct ExpansionBase *a6 __asm("a6") = BASE_NAME;
  145.   register unsigned long d0 __asm("d0") = startSlot;
  146.   register unsigned long d1 __asm("d1") = slotSpec;
  147.   __asm __volatile ("jsr a6@(-0x4e)"
  148.   : /* no output */
  149.   : "r" (a6), "r" (d0), "r" (d1)
  150.   : "a0","a1","d0","d1", "memory");
  151. }
  152. extern __inline void 
  153. FreeConfigDev (BASE_PAR_DECL struct ConfigDev *configDev)
  154. {
  155.   BASE_EXT_DECL
  156.   register struct ExpansionBase *a6 __asm("a6") = BASE_NAME;
  157.   register struct ConfigDev *a0 __asm("a0") = configDev;
  158.   __asm __volatile ("jsr a6@(-0x54)"
  159.   : /* no output */
  160.   : "r" (a6), "r" (a0)
  161.   : "a0","a1","d0","d1", "memory");
  162. }
  163. extern __inline void 
  164. FreeExpansionMem (BASE_PAR_DECL unsigned long startSlot,unsigned long numSlots)
  165. {
  166.   BASE_EXT_DECL
  167.   register struct ExpansionBase *a6 __asm("a6") = BASE_NAME;
  168.   register unsigned long d0 __asm("d0") = startSlot;
  169.   register unsigned long d1 __asm("d1") = numSlots;
  170.   __asm __volatile ("jsr a6@(-0x5a)"
  171.   : /* no output */
  172.   : "r" (a6), "r" (d0), "r" (d1)
  173.   : "a0","a1","d0","d1", "memory");
  174. }
  175. extern __inline ULONG 
  176. GetCurrentBinding (BASE_PAR_DECL struct CurrentBinding *currentBinding,unsigned long bindingSize)
  177. {
  178.   BASE_EXT_DECL
  179.   register ULONG  _res  __asm("d0");
  180.   register struct ExpansionBase *a6 __asm("a6") = BASE_NAME;
  181.   register struct CurrentBinding *a0 __asm("a0") = currentBinding;
  182.   register unsigned long d0 __asm("d0") = bindingSize;
  183.   __asm __volatile ("jsr a6@(-0x8a)"
  184.   : "=r" (_res)
  185.   : "r" (a6), "r" (a0), "r" (d0)
  186.   : "a0","a1","d0","d1", "memory");
  187.   return _res;
  188. }
  189. extern __inline struct DeviceNode *
  190. MakeDosNode (BASE_PAR_DECL APTR parmPacket)
  191. {
  192.   BASE_EXT_DECL
  193.   register struct DeviceNode * _res  __asm("d0");
  194.   register struct ExpansionBase *a6 __asm("a6") = BASE_NAME;
  195.   register APTR a0 __asm("a0") = parmPacket;
  196.   __asm __volatile ("jsr a6@(-0x90)"
  197.   : "=r" (_res)
  198.   : "r" (a6), "r" (a0)
  199.   : "a0","a1","d0","d1", "memory");
  200.   return _res;
  201. }
  202. extern __inline void 
  203. ObtainConfigBinding (BASE_PAR_DECL0)
  204. {
  205.   BASE_EXT_DECL
  206.   register struct ExpansionBase *a6 __asm("a6") = BASE_NAME;
  207.   __asm __volatile ("jsr a6@(-0x78)"
  208.   : /* no output */
  209.   : "r" (a6)
  210.   : "a0","a1","d0","d1", "memory");
  211. }
  212. extern __inline UBYTE 
  213. ReadExpansionByte (BASE_PAR_DECL APTR board,unsigned long offset)
  214. {
  215.   BASE_EXT_DECL
  216.   register UBYTE  _res  __asm("d0");
  217.   register struct ExpansionBase *a6 __asm("a6") = BASE_NAME;
  218.   register APTR a0 __asm("a0") = board;
  219.   register unsigned long d0 __asm("d0") = offset;
  220.   __asm __volatile ("jsr a6@(-0x60)"
  221.   : "=r" (_res)
  222.   : "r" (a6), "r" (a0), "r" (d0)
  223.   : "a0","a1","d0","d1", "memory");
  224.   return _res;
  225. }
  226. extern __inline void 
  227. ReadExpansionRom (BASE_PAR_DECL APTR board,struct ConfigDev *configDev)
  228. {
  229.   BASE_EXT_DECL
  230.   register struct ExpansionBase *a6 __asm("a6") = BASE_NAME;
  231.   register APTR a0 __asm("a0") = board;
  232.   register struct ConfigDev *a1 __asm("a1") = configDev;
  233.   __asm __volatile ("jsr a6@(-0x66)"
  234.   : /* no output */
  235.   : "r" (a6), "r" (a0), "r" (a1)
  236.   : "a0","a1","d0","d1", "memory");
  237. }
  238. extern __inline void 
  239. ReleaseConfigBinding (BASE_PAR_DECL0)
  240. {
  241.   BASE_EXT_DECL
  242.   register struct ExpansionBase *a6 __asm("a6") = BASE_NAME;
  243.   __asm __volatile ("jsr a6@(-0x7e)"
  244.   : /* no output */
  245.   : "r" (a6)
  246.   : "a0","a1","d0","d1", "memory");
  247. }
  248. extern __inline void 
  249. RemConfigDev (BASE_PAR_DECL struct ConfigDev *configDev)
  250. {
  251.   BASE_EXT_DECL
  252.   register struct ExpansionBase *a6 __asm("a6") = BASE_NAME;
  253.   register struct ConfigDev *a0 __asm("a0") = configDev;
  254.   __asm __volatile ("jsr a6@(-0x6c)"
  255.   : /* no output */
  256.   : "r" (a6), "r" (a0)
  257.   : "a0","a1","d0","d1", "memory");
  258. }
  259. extern __inline void 
  260. SetCurrentBinding (BASE_PAR_DECL struct CurrentBinding *currentBinding,unsigned long bindingSize)
  261. {
  262.   BASE_EXT_DECL
  263.   register struct ExpansionBase *a6 __asm("a6") = BASE_NAME;
  264.   register struct CurrentBinding *a0 __asm("a0") = currentBinding;
  265.   register unsigned long d0 __asm("d0") = bindingSize;
  266.   __asm __volatile ("jsr a6@(-0x84)"
  267.   : /* no output */
  268.   : "r" (a6), "r" (a0), "r" (d0)
  269.   : "a0","a1","d0","d1", "memory");
  270. }
  271. extern __inline void 
  272. WriteExpansionByte (BASE_PAR_DECL APTR board,unsigned long offset,unsigned long byte)
  273. {
  274.   BASE_EXT_DECL
  275.   register struct ExpansionBase *a6 __asm("a6") = BASE_NAME;
  276.   register APTR a0 __asm("a0") = board;
  277.   register unsigned long d0 __asm("d0") = offset;
  278.   register unsigned long d1 __asm("d1") = byte;
  279.   __asm __volatile ("jsr a6@(-0x72)"
  280.   : /* no output */
  281.   : "r" (a6), "r" (a0), "r" (d0), "r" (d1)
  282.   : "a0","a1","d0","d1", "memory");
  283. }
  284.  
  285. #undef BASE_EXT_DECL
  286. #undef BASE_EXT_DECL0
  287. #undef BASE_PAR_DECL
  288. #undef BASE_PAR_DECL0
  289. #undef BASE_NAME
  290.  
  291. __END_DECLS
  292.  
  293. #endif /* _INLINE_EXPANSION_H */
  294.